package Consola;

/**
 * Encriptar.java
 * @author Vinicio Gomez
 * Clase que encripta y desencripta un String  
 * basado en el programa en:
 * http://www.casdreams.com/auladeinformatica/PROGJAVA/PROGJAVA19.htm
 * 11/10/2011
 */

public class Encriptar {
	private static final String clave = "!(%*.&/)&%AS#AD!";	
	
	/**
	 * Encripta un String 
	 * @param texto el texto a encriptar
	 * @return el texto encriptado 
	 */
	public static String encrypt(String texto){
	   String retorno="";
       int i=0, j=0, ic=clave.length()    ,it=texto.length();
       int temp;
       int[] claveascii = new int[ic];
       int[] textoascii = new int[it];
       
       for (i=0; i<ic;i++)  claveascii[i]=clave.charAt(i);
       for (i=0; i<it;i++)  textoascii[i]=texto.charAt(i);
       for (i=0; i<it;i++){
           j++;
           if (j>=ic)j=0;	          
           temp= textoascii[i]+claveascii[j];
           if (temp > 255) temp=temp-255;
           retorno=retorno + (char)temp;       
       }
       return retorno;                        
	}
	
	/**
	 * Desencripta un String
	 * @param texto el texto a desencriptar
	 * @return el texto desencriptado
	 */
	public static String decrypt (String texto){
		String retorno="";
		int i=0, j=0, ic=clave.length()    ,it=texto.length();
		int temp;
		int[] claveascii = new int[ic];
		int[] textoascii = new int[it];
		for (i=0; i<ic;i++)  claveascii[i]=clave.charAt(i);
		for (i=0; i<it;i++)  textoascii[i]=texto.charAt(i);
		for (i=0; i<it;i++){
	           j++;
	           if (j>=ic)j=0;	          
	           temp= textoascii[i]-claveascii[j];
	           if (temp < 0) temp=temp+256;
	           retorno=retorno + (char)temp;
		}
	    return retorno;
	}   
}
